home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 August: Tool Chest / Dev.CD Aug 94.toast / New System Software Extensions / OpenDoc A6 / SOM / OpenDoc and SOM / CPlusPlus / Link.xh < prev    next >
Encoding:
Text File  |  1994-04-19  |  2.7 KB  |  144 lines  |  [TEXT/MPS ]

  1.  
  2. /*
  3.  * This file was generated by the SOM Compiler.
  4.  * FileName: Locrian:WWDCSun:CPlusPlus:Link.xh.
  5.  * Generated using:
  6.  *     SOM Precompiler somipc: somc/smemit.c
  7.  *     SOM Emitter emitxh.dll: somc/smmain.c
  8.  */
  9.  
  10. /*
  11.  * 
  12.  *  Theory of Operation
  13.  * 
  14.  * 
  15.  *  Classes defined in this interface
  16.  * 
  17.  */
  18.  
  19.  
  20. #ifndef SOM_ODLink_xh
  21. #define SOM_ODLink_xh
  22.  
  23. class ODLink;
  24.  
  25. #define ODLink_MajorVersion 1
  26. #define ODLink_MinorVersion 0
  27.  
  28. /* C++ som defs */
  29. #include <somcls.xh>
  30.  
  31. /* Include C++ parent defs */
  32. #ifndef SOM_ODBaseLink_xh
  33. #include <LinkB.xh>
  34. #endif
  35.  
  36. #ifndef ODLink_API
  37. #define ODLink_API
  38. /*
  39.  * -- The Class API
  40.  */
  41.  
  42. /*
  43.  * Start of user-defined types:
  44.  */
  45. class ODExtension;
  46. class ODLinkSource;
  47. class ODStorageUnit;
  48. class ODPart;
  49. class ODPartList;
  50. class ODDraft;
  51.  
  52. /*
  53.  * End of user-defined types.
  54.  */
  55.  
  56. #if applec ^ PRAGMA_LIB_EXPORT
  57. #pragma lib_export on
  58. #endif
  59.  
  60.  
  61. /* A procedure to create the ODLink Class */
  62. SOMEXTERN SOMClass * SOMLINK ODLinkNewClass(
  63.         integer4 majorVersion,
  64.         integer4 minorVersion);
  65.  
  66. /* The API to the ODLink class object, and the methods it introduces. */
  67. typedef struct ODLinkClassDataStructure {
  68.     SOMClass *classObject;
  69.     somMToken reserved1;
  70.     somMToken reserved2;
  71.     somMToken reserved3;
  72.     somMToken reserved4;
  73.     somMToken reserved5;
  74.     somMToken reserved6;
  75.     somMToken reserved7;
  76.     somMToken reserved8;
  77.     somMToken reserved9;
  78. } ODLinkClassDataStructure;
  79. #ifdef SOM_NO_DATA_EXPORTS
  80.    SOMEXTERN ODLinkClassDataStructure * ODLinkGetClassData ( void );
  81. #   undef ODLinkClassData
  82. #   define ODLinkClassData (*ODLinkGetClassData())
  83. #else
  84.    SOMEXTERN ODLinkClassDataStructure ODLinkClassData;
  85. #endif /* SOM_NO_DATA_EXPORTS */
  86.  
  87. #if applec ^ PRAGMA_LIB_EXPORT
  88. #pragma lib_export off
  89. #endif
  90.  
  91. #define _ODLink ODLinkClassData.classObject
  92.  
  93. /* The API to parentMtabs for ODLink, and the instance data it introduces. */
  94. SOMEXTERN struct ODLinkCClassDataStructure {
  95.     somMethodTabs parentMtab;
  96.     somDToken instanceDataToken;
  97. } ODLinkCClassData;
  98.  
  99. /*
  100.  * -- Typedefs for Procedures that support Methods introduced by ODLink
  101.  */
  102. SOMEXTERN {
  103. }
  104.  
  105. #endif /* ODLink_API */
  106.  
  107.  
  108. /*
  109.  * -- Method Tokens are Thunks
  110.  */
  111. #undef somresolve_
  112. #define somresolve_(obj,mToken) ((somMethodProc*)((void)obj, mToken))
  113.  
  114. /*
  115.  * -- The C++ Wrapper Class for ODLink
  116.  */
  117. class ODLink : public ODBaseLink
  118. {
  119. public:
  120.  
  121. void *operator new(size_t size)
  122. {
  123.    SOM_IgnoreWarning(size);
  124.    if (!ODLinkClassData.classObject) 
  125.       ODLinkNewClass(ODLink_MajorVersion,ODLink_MinorVersion);
  126.    return (void *)
  127.       ((somTD_SOMClass_somNew)
  128.       somresolve_((SOMObject *)((void*)(ODLinkClassData.classObject)),
  129.                  SOMClassClassData.somNew))
  130.          ((SOMClass *)((void*)(ODLinkClassData.classObject)));
  131. }
  132.  
  133. void operator delete(void * obj)
  134. {
  135.    ((SOMObject *)obj)->somFree();
  136. }
  137.  
  138.  
  139. };   /* ODLink */
  140.  
  141.  
  142.  
  143. #endif       /* SOM_ODLink_xh */
  144.